// 所有进程事件
import {
    ipcMain, BrowserWindow, screen
} from 'electron'

var fs=require("fs");

var child_process = require("child_process");
console.log(child_process)

var allVideoId=[];

//生成视频
function generateVideo(videoOptUrl,fileLuJing,fileName){
    console.log(videoOptUrl)
    //ffmpeg
    var cmd = process.cwd() + "\\ffmpeg  -rtsp_transport tcp -i " + videoOptUrl + "  -f dshow -i audio=\"麦克风阵列 (Realtek(R) Audio)\" -vcodec copy -acodec aac -f mp4  -tune zerolatency  -preset superfast      -g 5 -b 700000  -threads 10  " + fileLuJing + "\\" + fileName;
    var last= child_process.exec(cmd, {
        maxBuffer: 1024 * 9000
    }, function (err, stdout, stderr) {
        console.log(stdout)
        if (err) {
            // reject(err);
            console.log(err)
        } else if (stderr.lenght > 0) {
            // reject(new Error(stderr.toString()));
            console.log(stderr.toString())
        } else {
            // fs.unlinkSync(url + ".mp4");
            //成功
            // resolve();
        }
    });
    return last;
}
//停止录制
function stopRecording(pid){
    console.log("终止"+pid);
    child_process.kill();
}

export default function () {
    // 最小化进程事件（桌面应用关闭事件  结合  homeHead.vue send的事件使用 ）
    ipcMain.on('window-min', () => {
        global.mainWindow.minimize()
    });
    // 最大化进程事件（桌面应用关闭事件  结合  homeHead.vue send的事件使用 ）
    ipcMain.on('window-max', () => {
        if (global.mainWindow.isMaximized()) {
            global.mainWindow.unmaximize();
        } else {
            global.mainWindow.maximize();
        }
    });
    // 关闭所有窗口进程事件（桌面应用关闭事件  结合  homeHead.vue send的事件使用 ）
    ipcMain.on('window-close', () => {
        let wins = BrowserWindow.getAllWindows();
        for (let i = 0; i < wins.length; i++) {
            wins[i].close()
        }
    });

    //开始录制远程视频
    ipcMain.on("recordingVideo",(eventname,networkData,directoryName,FileFolader,fileName)=>{
        //清空所有开始录制后的id
        allVideoId=[];
        //networkData=["rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov"]
        //查询 项目存储目录下  一级（参试者 文件夹是否存在）文件夹是否存在
        let isExist= fs.existsSync(directoryName+"\\"+FileFolader);
        if(!isExist){
            //没有该文件或目录则创建
            fs.mkdirSync(directoryName + "\\" + FileFolader);
        }
        //查询 项目存储目录下  二级（观察室录制视频 文件夹是否存在）文件夹是否存在
        isExist= fs.existsSync(directoryName+"\\"+FileFolader+"\\"+"观察室录制视频");
        if(!isExist){
            //没有该文件或目录则创建
            fs.mkdirSync(directoryName + "\\" + FileFolader+"\\"+"观察室录制视频");
        }
        let fileLuJing=directoryName + "\\" + FileFolader+"\\"+"观察室录制视频";
        for(let i=0;i<networkData.length;i++){
            let callbackSuccess=generateVideo(networkData[i],fileLuJing,fileName+"_窗口"+(i+1)+".mp4");
            allVideoId.push(callbackSuccess.pid);
        }
    });

    //结束录制远程视频
    ipcMain.on("stopRecordingVideo",(event)=>{
        stopRecording();
        event.sender.send("jieshuMessage");
        // allVideoId.forEach((pid,index)=>{
        //     stopRecording(pid);
        //
        //     if((index+1)==allVideoId.length){
        //         event.sender.send("jieshuMessage");
        //     }
        // });
    })
}
